// pages/register/register.js
const { login } = require('../../services/auth')
const { getRule } = require('../../services/rule')

Page({

  /**
   * 页面的初始数据
   */
  data: {
    agreementChecked: false,
    userRule: '',
    privatePolicy: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 检查本地是否存储有token，如果有则直接跳转到index页面
    try {
      const token = wx.getStorageSync('token')
      if (token) {
        wx.redirectTo({
          url: '/pages/index/index'
        })
        return
      }
    } catch (e) {
      console.log('获取token失败：', e)
    }
    this.fetchRules()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  /**
   * 拉取协议内容
   */
  async fetchRules() {
    try {
      const res = await getRule()
      if (res && res.code === 1 && res.data) {
        this.setData({
          userRule: res.data.user_rule || '',
          privatePolicy: res.data.private_policy || ''
        })
      } else {
        wx.showToast({ title: (res && res.msg) || '无法获取协议内容', icon: 'none' })
      }
    } catch (err) {
      console.error('获取协议失败：', err)
      wx.showToast({ title: '获取协议失败', icon: 'none' })
    }
  },

  /**
   * 协议勾选状态变更
   */
  onAgreementChange(e) {
    const checked = (e.detail.value || []).includes('agree')
    this.setData({ agreementChecked: checked })
  },

  /**
   * 查看协议
   */
  onRuleTap(e) {
    const type = e.currentTarget.dataset.type
    const isUserRule = type === 'user'
    const content = isUserRule ? this.data.userRule : this.data.privatePolicy
    const title = isUserRule ? '用户协议' : '隐私政策'
    if (!content) {
      wx.showToast({ title: '暂无内容', icon: 'none' })
      return
    }
    wx.navigateTo({
      url: `/pages/ruleDetail/ruleDetail?title=${encodeURIComponent(title)}`,
      success: (res) => {
        if (res && res.eventChannel) {
          res.eventChannel.emit('ruleContent', { content })
        }
      }
    })
  },

  /**
   * 微信授权登录
   */
  onWechatLogin() {
    if (!this.data.agreementChecked) {
      wx.showToast({ title: '请先勾选协议', icon: 'none' })
      return
    }
    wx.login({
      success: async (loginRes) => {
        try {
          const code = loginRes.code || ''
          if (!code) {
            wx.showToast({ title: '获取code失败', icon: 'none' })
            return
          }
          const res = await login({ code })
          // 期望返回结构见需求说明
          if (res && res.code === 1 && res.data) {
            const token = res.data.token
            const user = res.data.user
            if (token) wx.setStorageSync('token', token)
            if (user) wx.setStorageSync('user', user)
            wx.showToast({ title: '登录成功', icon: 'success' })
            wx.redirectTo({ url: '/pages/index/index' })
          } else {
            wx.showToast({ title: res && res.msg ? res.msg : '登录失败', icon: 'none' })
          }
        } catch (err) {
          console.error('登录异常：', err)
          // 错误提示已在请求封装中处理
        }
      },
      fail: (err) => {
        wx.showToast({ title: '登录失败', icon: 'none' })
        console.error('wx.login 失败：', err)
      }
    })
  },

  /**
   * 暂不登录
   */
  onSkipLogin() {
    wx.showModal({
      title: '提示',
      content: '确定要跳过登录吗？部分功能可能无法使用。',
      success: (res) => {
        if (res.confirm) {
          // 跳转到主页面（游客模式）
          wx.redirectTo({
            url: '/pages/index/index'
          });
        }
      }
    });
  }
})
